home *** CD-ROM | disk | FTP | other *** search
- /*
- File: Window.cp
-
- Contains: TWindow is a Window wrapper class that handles most of the basic window functionality.
- Window.cp contains the TWindow member functions.
-
- Written by:
-
- Copyright: Copyright © 1992-1999 by Apple Computer, Inc., All Rights Reserved.
-
- You may incorporate this Apple sample source code into your program(s) without
- restriction. This Apple sample source code has been provided "AS IS" and the
- responsibility for its operation is yours. You are not permitted to redistribute
- this Apple sample source code as "Apple sample source code" after having made
- changes. If you're going to re-distribute the source, we require that you make
- it clear in the source that the code was descended from Apple sample source
- code, but that you've made changes.
-
- Change History (most recent first):
- 8/18/1999 Karl Groethe Updated for Metrowerks Codewarror Pro 2.1
-
-
- */
- #ifndef _WINDOW_
- #include "Window.h"
- #endif
-
-
- // _________________________________________________________________________________________________________ //
- // TWindow class member function implementations.
- // CONSTRUCTORS AND DESTRUCTORS
- #pragma segment Window
- TWindow::TWindow()
- {
- this->Initialize(); // initialize fields to known values
-
- // Create Window.
- TEnvironment myEnvironment; // check out our environment if Color QD is present
-
- if (myEnvironment.HasColorQD())
- {
- fWindow = ::NewCWindow(NULL, &fRect, fWindowTitle, true, noGrowDocProc, (WindowPtr) - 1L, true, 0L);
- fColorWindow = true;
- }
- else
- fWindow = ::NewWindow(NULL, &fRect, fWindowTitle, true, noGrowDocProc, (WindowPtr) - 1L, true, 0L);
-
- ASSERT(fWindow != NULL, "\pProblems with TWindow::TWindow, NewWindow");
- fWindowRecord = (WindowPeek)fWindow; // get ptr to the real window record
- }
-
-
- #pragma segment Window
- TWindow::TWindow(short windowID)
- // Create window based on resource ID.
- {
- fColorWindow = false; // can't assume anything…
-
- // Create Window.
- TEnvironment myEnvironment; // check out our environment if Color QD is present
-
- if (myEnvironment.HasColorQD())
- {
- fWindow = ::GetNewCWindow(windowID, NULL, (WindowPtr) - 1);
- fColorWindow = true;
- }
- else
- fWindow = ::GetNewCWindow(windowID, NULL, (WindowPtr) - 1);
- ASSERT(fWindow != NULL, "\pProblems with TWindow::TWindow(ResID), GetNewWindow");
-
- fWindowRecord = (WindowPeek)fWindow; // get ptr to the real window record
- }
-
-
- #pragma segment Window
- TWindow::~TWindow()
- // Default destructor -- get rid of the window memory allocations.
- {
- ::DisposeWindow(fWindow); // dispose our WindowPtr
- }
-
-
- #pragma segment Window
- void TWindow::Initialize()
- // Initialize the window to a known state (title, position).
- {
- Pstrcpy(fWindowTitle, "\pUntitled"); // set default window title
- fRect.top = TWindow::kTop; // set default window rect
- fRect.left = TWindow::kLeft;
- fRect.bottom = TWindow::kBottom;
- fRect.right = TWindow::kRight;
-
- fColorWindow = false; // can't assume anything…
- }
-
-
- // MAIN INTERFACE
- #pragma segment Window
- void TWindow::Draw()
- // Draw is an implementation dependent function, you need to override this one
- // and create your own drawing routines.
- {
- }
-
-
- #pragma segment Window
- void TWindow::DoClick()
- // DoClick is an implementation dependent function, you need to override this one
- // and create your own mouse click routines.
- {
- }
-
-
- #pragma segment Window
- void TWindow::Show()
- // Make window visible.
- {
- ::ShowWindow(fWindow);
- }
-
-
- #pragma segment Window
- void TWindow::Hide()
- // Make window invisible.
- {
- ::HideWindow(fWindow);
- }
-
-
- // GET/SET FUNCTIONS
- #pragma segment Window
- WindowPtr TWindow::GetWindowPtr() const
- // Get the actual windowPtr record.
- {
- return fWindow;
- }
-
-
- #pragma segment Window
- void TWindow::SetTitle(const Str255* title)
- // Set window title.
- {
- Str255 oldTitle;
-
- // Get old title, if still the same, don't bother changing it (less flicker)
- ::GetWTitle(fWindow, oldTitle);
-
- if (!CompareStr255(&oldTitle, title))
- ::SetWTitle(fWindow, *title);
- }
-
-
- #pragma segment Window
- void TWindow::GetTitle(Str255* result) const
- // Get window title.
- {
- if (fWindow) // we have a valid window?
- ::GetWTitle(fWindow, *result);
- else
- Pstrcpy(*result, "\p"); // copy in an empty string
- }
-
-
- #pragma segment Window
- Rect TWindow::GetExtent() const
- // Get the internal Rect of window.
- {
- return fWindow->portRect;
- }
-
-
- #pragma segment Window
- Rect TWindow::GetFrame() const
- // Get the frame Rect of window.
- {
- Rect frame;
-
- frame.left = -1;
- frame.top = -1;
-
- // Include one pixel for the the frame itself!
- frame.right = fWindow->portRect.right - fWindow->portRect.left + 1;
- frame.bottom = fWindow->portRect.bottom - fWindow->portRect.top + 1;
-
- return frame;
- }
-
-
- #pragma segment Window
- Boolean TWindow::Contains(Point test) const
- // Check if point is inside window.
- {
- return (::PtInRgn(test, fWindowRecord->contRgn));
- }
-
-
- #pragma segment Window
- Boolean TWindow::IsColorWindow() const
- // Return true/false if window is a color grafport based one.
- {
- return fColorWindow;
- }
-
-
- // _________________________________________________________________________________________________________ //
-
-
- /* Change History (most recent last):
- No Init. Date Comment
- 1 khs 11/7/92 New file
- 2 khs 1/7/93 Cleanup
- */
-
-